perm filename MAT3D.FAI[VIS,HPM]1 blob sn#281318 filedate 1977-05-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY M33X33,M13X33,T33
C00004 ENDMK
C⊗;
ENTRY M33X33,M13X33,T33

A←0 ↔ B←1 ↔ C←2 ↔ D←3 ↔ E←4 ↔ F←5 ↔ G←6 ↔ H←7 ↔ I←10
MA←13 ↔ MB←14 ↔ MR←15 ↔ T←11 ↔ P←17

RETAD:	0

M33X33: POP	P,RETAD			;multiply a 3x3 matrix MA with another
	POP	P,MR			;3x3 MB, putting result in MR
	POP	P,MB			; M33X33(MA,MB,MR)
	POP	P,MA

	FOR I←0,2,1
{	FOR J←0,2,1
{	MOVE	3*I+J,3*I(MA)
	FMPR	3*I+J,J(MB)
	MOVE	T,3*I+1(MA)
	FMPR	T,J+3(MB)
	FADR	3*I+J,T
	MOVE	T,3*I+2(MA)
	FMPR	T,J+6(MB)
	FADR	3*I+J,T
}
}	
	MOVEI	T,10(MR)
	BLT	MR,(T)
	JRST	@RETAD



M13X33: POP	P,RETAD			;multiply a 1x3 matrix MA with a
	POP	P,MR			;3x3 MB, putting result in 1X3 result in MR
	POP	P,MB			; M13X33(MA,MB,MR)
	POP	P,MA

	FOR I←0,2,1
{	MOVE	I,0(MA)
	FMPR	I,I(MB)
	MOVE	T,1(MA)
	FMPR	T,I+3(MB)
	FADR	I,T
	MOVE	T,2(MA)
	FMPR	T,I+6(MB)
	FADR	I,T
}
	MOVEI	T,2(MR)
	BLT	MR,(T)
	JRST	@RETAD

T33:	POP	P,RETAD			;TRANSPOSE A 3X3 MATRIX
	POP	P,MR
	POP	P,MA			; T33(MA,MR)

	HRLZ	MA,MA
	BLT	MA,10
	EXCH	1,3
	EXCH	2,6
	EXCH	7,5
	MOVEI	T,10(MR)
	BLT	MR,(T)
	JRST	@RETAD

	END